package com.chenjt.netty.thirteen_handler;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

/**
 * 注释：自定义解码器(入站处理器)，要继承ByteToMessageDecoder
 *  将byte转为long
 *
 * @author chenjt
 * @date 2024/9/6 11:28
 */
public class MyByteToLongDecoder extends ByteToMessageDecoder {

    /**
     *
     * @param channelHandlerContext
     * @param in 读取数据的来源
     * @param out 解码之后将输入写入到该list，在下一层处理器中可以获取到
     * @throws Exception
     */
    @Override
    protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf in, List<Object> out) throws Exception {
        System.out.println("decode invoked!");

        System.out.println(in.readableBytes());

        if(in.readableBytes() >= 8){
            out.add(in.readLong());
        }
    }
}
